﻿using ezCloud.Data;
using System;
using System.Linq;

namespace ezCloud.Api.Common
{
    public static class BackendPaymentUtility
    {
        public static void CalculateRemainingDays(int hotelId, ezCloudDataContext context)
        {
            context.EzCalculateRemainingDays(hotelId); 
            //var context = new ezCloudDataContext();
            //var ezAccount = hotel.EzAccountsList.FirstOrDefault();
            //var hotelModuleDiscount =
            //        context.EzHotelModules.Where(hotelModule => hotelModule.HotelId == hotel.HotelId)
            //            .GroupJoin(
            //                context.EzHotelDefaultDiscounts.Where(
            //                    hotelDiscount =>
            //                        hotelDiscount.HotelId == hotel.HotelId &&
            //                        hotelDiscount.StartDate.Value.Date <= DateTime.UtcNow.Date &&
            //                        DateTime.UtcNow.Date <= hotelDiscount.EndDate.Value.Date),
            //                hotelModule => hotelModule.EzModules.EzModuleId,
            //                hotelDiscount => hotelDiscount.EzDefaultDiscounts.EzModuleId,
            //                (hotelModule, hotelDiscount) => new
            //                {
            //                    hotelModule,
            //                    hotelDiscount,
            //                    Module = hotelModule.EzModules
            //                }).ToList();

            //if (hotelModuleDiscount.Count > 0)
            //{
            //    var totalRooms = hotel.RoomsList.Where(rm => rm.HotelId == hotel.HotelId && rm.IsHidden == false).ToList().Count;
            //    var totalAmountPerDay = 0.0M;
            //    foreach (var module in hotelModuleDiscount)
            //    {
            //        if (module.hotelDiscount.Any() && module.Module.ModuleCode != "ROOM")
            //            continue;

            //        var totalModuleAmount = module.Module.EzModuleRangerPricesList.FirstOrDefault(range => range.EzModuleId == module.Module.EzModuleId && range.MinRoom <= totalRooms && totalRooms <= range.MaxRoom).AmountPerDay;
            //        totalAmountPerDay += (decimal)totalModuleAmount;
            //    }

            //    if (totalAmountPerDay > 0)
            //    {
            //        hotel.RemainingDays = (int)Math.Floor((decimal)(ezAccount.Amount + ezAccount.AmountFee) / totalAmountPerDay);
            //        context.SubmitChanges();
            //    }
            //}
        }
    }
}
